#ifndef MSGTOSTAFF_H
#define MSGTOSTAFF_H
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <string>
const int eat_rest = 5;                 //读休止符的长度之前，需要读的没用字符的个数
const int eat_note = 0;                 //读单音的midi值之前，需要读的没用字符的个数
const int eat_o = 30;                   //读x/x拍之前需要读的没用字符的个数
typedef struct note {
    char black_key[100] = { 'x' };   //是否升降调
    char roll_call[100] = { 'x' };   //唱名
    int octave[100] = { 0 };         //第几八度
    int dots = 0;                  //附点数量
    char length;                   //音长(如果是休止符，就+r）
    char type = 'x';               //单音：n    和弦：c    休止符：r
    double q_length = 0;           //四分之一音符长度
    int measure = 0;               //第几小节
    int n = 0;                     //音的个数
    int hand = 0;                  //1为右手，0为左手
}note;
using namespace std;
FILE* open_file_r(string filename);                                    //打开需要读取的文件
FILE* open_file_w(string filename);                                    //打开需要写入的文件
struct note read_note(char first_char, FILE* f_p);                     //读取一行信息
int print_note(struct note put_out);                                   //测试返回的note是否正确，将其输出
char get_roll_call(int num);                                           //midi数字转唱名
char get_black_key(int num);                                           //midi数字判断是否有黑键
int get_octave(int num);                                               //midi数字判断八度
char ql_to_l(double ql);                                               //四分之一音符长度（quarter_length）转为标准长度
int dot(double ql);                                                    //附点判断
int print_txt(FILE* fp_r, FILE* fp_w, int hand);
int msgtostaff(string filename_r, string filename_w);

#endif // MSGTOSTAFF_H

